package com.android.yummycookies.util;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;

import com.android.yummycookies.BuildConfig;
import com.android.yummycookies.types.CookieType;

import android.graphics.Bitmap;
import android.util.Log;
import android.util.SparseArray;

/**
 * Classe permetant de creer des logs
 * 
 * @author julien
 * 
 */
public class Logger {

	/**
	 * Logue une simple chaine
	 * 
	 * @param tag
	 *            un tag
	 * @param message
	 *            le message a loguer
	 */
	public static void logDebug(String tag, String message) {
		if (BuildConfig.DEBUG) {
			Log.d(tag, message);
		}
	}

	/**
	 * Log un message avec un identifiant
	 * 
	 * @param tag
	 *            un tag
	 * @param message
	 *            le message a loguer
	 * @param id
	 *            un identifiant
	 */
	public static void logDebug(String tag, String message, int id) {
		if (BuildConfig.DEBUG) {
			Log.d(tag, message + " (id: " + id + ")");
		}
	}

	/**
	 * Log un message avec un sous message
	 * 
	 * @param tag
	 *            un tag
	 * @param message
	 *            le message a loguer
	 * @param subMessage
	 *            le sous message a loguer
	 */
	public static void logDebug(String tag, String message, String subMessage) {
		if (BuildConfig.DEBUG) {
			Log.d(tag, message + " (" + subMessage + ")");
		}
	}

	/**
	 * Log un message avec un ensemble d'identifiants
	 * 
	 * @param tag
	 *            un tag
	 * @param message
	 *            le message a loguer
	 * @param ids
	 *            un ensemble d'identifiants
	 */
	public static void logDebug(String tag, String message, Set<Integer> ids) {
		if (BuildConfig.DEBUG) {
			Log.d(tag,
					message
							+ " (ids: "
							+ Arrays.toString(ids.toArray(new Integer[ids
									.size()])) + ")");
		}
	}

	/**
	 * Log un message avec un ensemble d'identifiants
	 * 
	 * @param tag
	 *            un tag
	 * @param message
	 *            le message a loguer
	 * @param bitmaps
	 *            le sparsearray contenant les identifiants
	 */
	public static void logDebug(String tag, String message,
			SparseArray<Bitmap> bitmaps) {
		if (BuildConfig.DEBUG) {
			int[] ids = new int[bitmaps.size()];
			for (int i = 0; i < bitmaps.size(); i++) {
				ids[i] = bitmaps.keyAt(i);
			}
			Log.d(tag, message + " (ids: " + Arrays.toString(ids) + ")");
		}
	}

	/**
	 * Log un message avec un ensemble de nom de cookie
	 * 
	 * @param tag
	 *            un tag
	 * @param message
	 *            le message a loguer
	 * @param cookieTypes
	 *            les types de cookies a loguer
	 */
	public static void logDebug(String tag, String message,
			List<CookieType> cookieTypes) {
		if (BuildConfig.DEBUG) {
			String[] ids = new String[cookieTypes.size()];
			for (int i = 0; i < cookieTypes.size(); i++) {
				ids[i] = cookieTypes.get(i).name();
			}
			Log.d(tag, message + " (ids: " + Arrays.toString(ids) + ")");
		}
	}

}
